# Last modified 2018-02-20
bcbioRNASeq::prepareRNASeqTemplate()
source("_setup.R")

# Directory paths
data_dir <- file.path(params$output_dir, "data", Sys.Date())
results_dir <- file.path(params$output_dir, "results", "counts")
invisible(mapply(
    FUN = dir.create,
    list(data_dir, results_dir),
    MoreArgs = list(recursive = TRUE, showWarnings = FALSE)
))

# Load bcbioRNASeq object
bcb_name <- load(params$bcb_file)
bcb <- get(bcb_name, inherits = FALSE)
stopifnot(is(bcb, "bcbioRNASeq"))
invisible(validObject(bcb))

Overview

  • Principal Investigator: Kevin Eggan
  • Researcher: Joseph Klim
  • Experiment: ES-derived motor neuron knockdown RNA-seq

> sampleMetadata(bcb)

bcbio run data was imported from /n/data1/cores/bcbio/PIs/kevin_eggan/es_derived_motor_neuron_knockdown_RNAseq/illumina_rnaseq/final.

Count matrices

We aligned the reads using the GRCh37/hg19 genome annotations from Ensembl.

> raw_counts <- counts(bcb, normalized = FALSE)
> normalized_counts <- counts(bcb, normalized = TRUE)
> tpm <- counts(bcb, normalized = "tpm")
> saveData(raw_counts, normalized_counts, tpm, dir = data_dir)
> writeCounts(raw_counts, normalized_counts, tpm, dir = results_dir)

Copy files to Dropbox

We’re provisioning the files on Dropbox for the HSCI Stem Cell Commons.

> dropbox_counts_list <- copyToDropbox(c(raw_counts = file.path(results_dir, "raw_counts.csv.gz"), 
+     normalized_counts = file.path(results_dir, "normalized_counts.csv.gz"), 
+     tpm = file.path(results_dir, "tpm.csv.gz")), dir = basename(getwd()))
## Dropbox: Michael Steinbaugh (HBC) <msteinbaugh@hsph.harvard.edu>
## File ./results/counts/raw_counts.csv.gz uploaded as /eggan-es_derived_motor_neuron_knockdown-rnaseq-human/raw_counts.csv.gz successfully at 2018-02-20T16:52:17Z
## File ./results/counts/normalized_counts.csv.gz uploaded as /eggan-es_derived_motor_neuron_knockdown-rnaseq-human/normalized_counts.csv.gz successfully at 2018-02-20T16:52:21Z
## File ./results/counts/tpm.csv.gz uploaded as /eggan-es_derived_motor_neuron_knockdown-rnaseq-human/tpm.csv.gz successfully at 2018-02-20T16:52:25Z
> saveData(dropbox_counts_list, dir = data_dir)
## Saving dropbox_counts_list.rda to /mnt/Orchestra/eggan-es_derived_motor_neuron_knockdown-rnaseq-human/data/2018-02-20

File downloads

  • Normalized counts: Use to evaluate individual genes and/or generate plots. These counts are normalized for the variation in sequencing depth across samples.
  • TPM: Transcripts per million, scaled by length and also suitable for plotting.
  • Raw counts: Only use to perform a new differential expression analysis. These counts will vary across samples due to differences in sequencing depth, and have not been normalized. Do not use this file for plotting genes.
> file_downloads <- vapply(X = dropbox_counts_list, FUN = function(x) {
+     url <- x[["url"]]
+     url <- gsub("\\?dl=0$", "", url)
+     name <- x[["name"]]
+     paste0("`", name, "`: ", url)
+ }, FUN.VALUE = character(1L))
> markdownList(file_downloads)

Read metrics

We’re seeing strong batch effects based on sample date and replicate number.

I’ve tabbed corresponding plots that demonstrate the batch effects by date and replicate below.

Total reads

> markdownHeader("date", level = 3)

date

> plotTotalReads(bcb, interestingGroups = "date")

> markdownHeader("replicate", level = 3)

replicate

> plotTotalReads(bcb, interestingGroups = "replicate")

Mapped reads

The number of mapped reads should correspond to the number of total reads.

> markdownHeader("date", level = 3)

date

> plotMappedReads(bcb, interestingGroups = "date")

> markdownHeader("replicate", level = 3)

replicate

> plotMappedReads(bcb, interestingGroups = "replicate")

Mapping rate

The genomic mapping rate represents the percentage of reads mapping to the reference genome. Low mapping rates are indicative of sample contamination, poor sequencing quality or other artifacts.

> plotMappingRate(bcb)

Number of genes detected

> markdownHeader("date", level = 3)

date

> plotGenesDetected(bcb, interestingGroups = "date")

> markdownHeader("replicate", level = 3)

replicate

> plotGenesDetected(bcb, interestingGroups = "replicate")

Gene detection saturation

We should observe a linear trend in the number of genes detected with the number of mapped reads, which indicates that the sample input was not overloaded.

> markdownHeader("date", level = 3)

date

> plotGeneSaturation(bcb, interestingGroups = "date")

> markdownHeader("replicate", level = 3)

replicate

> plotGeneSaturation(bcb, interestingGroups = "replicate")

> markdownHeader("sampleName", level = 3)

sampleName

> plotGeneSaturation(bcb, interestingGroups = "sampleName")

Exonic mapping rate

Ideally, at least 60% of total reads should map to exons.

> markdownHeader("date", level = 3)

date

> plotExonicMappingRate(bcb, interestingGroups = "date")

> markdownHeader("replicate", level = 3)

replicate

> plotExonicMappingRate(bcb, interestingGroups = "replicate")

Intronic mapping rate

The majority of reads should map to exons and not introns.

> markdownHeader("date", level = 3)

date

> plotIntronicMappingRate(bcb, interestingGroups = "date")

> markdownHeader("replicate", level = 3)

replicate

> plotIntronicMappingRate(bcb, interestingGroups = "replicate")

rRNA mapping rate

Samples should have a ribosomal RNA (rRNA) contamination rate below 10%.

> plotRRNAMappingRate(bcb)

5’->3’ bias

> plot53Bias(bcb)

Counts per gene

Generally, we expect similar count spreads for all genes between samples unless the library sizes or total RNA expression are different. The log10 TMM-normalized counts per gene normalization method (Robinson and Oshlack 2010) equates the overall expression levels of genes between samples under the assumption that the majority of them are not differentially expressed. Therefore, by normalizing for total RNA expression by sample, we expect the spread of the log10 TMM-normalized counts per gene to be similar for every sample.

> markdownHeader("date", level = 3)

date

> plotCountsPerGene(bcb, interestingGroups = "date")

> markdownHeader("replicate", level = 3)

replicate

> plotCountsPerGene(bcb, interestingGroups = "replicate")

Count density

Generally, we expect similar count spreads for all genes between samples unless the total expressed RNA per sample is different.

> markdownHeader("date", level = 3)

date

> plotCountDensity(bcb, interestingGroups = "date")

> markdownHeader("replicate", level = 3)

replicate

> plotCountDensity(bcb, interestingGroups = "replicate")

Fit modeling

Several quality metrics are first assessed to explore the fit of the model, before differential expression analysis is performed.

Variance stabilization

The plots below show the standard deviation of normalized counts (normalized_counts) using log2(), rlog(), and variance stabilizing (vst()) transformations by rank(mean). The transformations greatly reduce the standard deviation, with rlog() stabilizing the variance best across the mean.

> plotMeanSD(bcb, orientation = "vertical")

Dispersion

The following plot shows the dispersion by mean of normalized counts. We expect the dispersion to decrease as the mean of normalized counts increases.

> plotDispEsts(bcb)

Sample similarity analysis

Before performing similarity analysis, we transform counts to log2, which acts to minimize large differences in sequencing depth and helps normalize all samples to a similar dynamic range. For RNA-seq count data, variance increases with the mean. Logarithmic transformation of normalized count values with a small pseudocount will account for large variations seen between the highest expressing genes so that these genes won’t dominate the PCA plots. However, due to the strong noise among low count values due to Poisson, the general log2 transformation will amplify this noise, and instead, low count genes will now dominate the PCA plots. So instead, we use a transformation (rlog()) that gives similar results for high counts as a log2 transformation but also shrinks the values of low counts towards the genes’ average across samples. We do this with the rlog() function in the DESeq2 package (Love, Huber, and Anders 2014), which we will later use for differential gene expression analysis.

Principal component analysis (PCA)

PCA (Jolliffe 2002) is a multivariate technique that allows us to summarize the systematic patterns of variations in the data. PCA takes the expression levels for genes and transforms it in principal component space, reducing each sample into one point. Thereby, we can separate samples by expression variation, and identify potential sample outliers. The PCA plot is a way to look at how samples are clustering.

We’re seeing a very large batch effect due to the date of sample preparation. As you can see, the samples are not clustering tightly by treatment, but instead are clustering by the date. We need to attempt to regress this effect out from our model for differential expression analysis. This may be difficult because we’re seeing such a large batch effect here.

> markdownHeader("date", level = 3)

date

> plotPCA(bcb, interestingGroups = "date")

> markdownHeader("replicate", level = 3)

replicate

> plotPCA(bcb, interestingGroups = "replicate")

> markdownHeader("treatment (labeled)", level = 3)

treatment (labeled)

> plotPCA(bcb, interestingGroups = c("category", "treatment"), label = TRUE)

Covariates correlation with PCs

When multiple factors may influence the results of a given experiment, it is useful to assess which of them is responsible for the most variance as determined by PCA. We adapted the method described by Daily et al. where they integrated a method to correlate covariates with principal components values to determine the importance of each factor.

Here we are showing the correlational analysis of the rlog transformed count data’s principal components with the metadata covariates of interest. Significant correlations (FDR < 0.1) are shaded from blue (anti-correlated) to orange (correlated), with non-significant correlations shaded in gray.

> plotPCACovariates(bcb)

Hierarchical clustering

Inter-correlation analysis (ICA) is another way to look at how well samples cluster by plotting the correlation between the expression profiles of the samples.

Like the PCA, it’s obvious here that the samples are clustering primarily by date, and then by category.

> plotCorrelationHeatmap(bcb, interestingGroups = c("date", "replicate", "category", 
+     "treatment"))


Methods

RNA-seq counts were generated by bcbio and bcbioRNASeq using salmon (Patro et al. 2017). Counts were imported into R using tximport (Soneson, Love, and Robinson 2016) and DESeq2 (Love, Huber, and Anders 2014). Gene annotations were obtained from Ensembl. Plots were generated by ggplot2 (Wickham 2009). Heatmaps were generated by pheatmap (Kolde 2015).

R session information

> mdHeader("YAML params", level = 2)

YAML params

> print(params)
## $bcb_file
## [1] "data/2018-02-20/bcb.rda"
## 
## $output_dir
## [1] "."
> mdHeader("`devtools::session_info()`", level = 2)

devtools::session_info()

> devtools::session_info()
##  setting  value                       
##  version  R version 3.4.3 (2017-11-30)
##  system   x86_64, darwin15.6.0        
##  ui       X11                         
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  tz       America/New_York            
##  date     2018-02-20                  
## 
##  package                * version    date      
##  acepack                  1.4.1      2016-10-29
##  affy                     1.56.0     2017-10-31
##  affyio                   1.48.0     2017-10-31
##  annotate                 1.56.1     2017-11-13
##  AnnotationDbi            1.40.0     2017-10-31
##  AnnotationFilter         1.2.0      2017-10-31
##  AnnotationHub            2.10.1     2017-11-08
##  assertive                0.3-5      2016-12-31
##  assertive.base           0.0-7      2016-12-30
##  assertive.code           0.0-1      2015-10-06
##  assertive.data           0.0-1      2015-10-06
##  assertive.data.uk        0.0-1      2015-10-06
##  assertive.data.us        0.0-1      2015-10-06
##  assertive.datetimes      0.0-2      2016-05-10
##  assertive.files          0.0-2      2016-05-10
##  assertive.matrices       0.0-1      2015-10-06
##  assertive.models         0.0-1      2015-10-06
##  assertive.numbers        0.0-2      2016-05-09
##  assertive.properties     0.0-4      2016-12-30
##  assertive.reflection     0.0-4      2016-12-30
##  assertive.sets           0.0-3      2016-12-30
##  assertive.strings        0.0-3      2016-05-10
##  assertive.types          0.0-3      2016-12-30
##  assertthat               0.2.0      2017-04-11
##  backports                1.1.2      2017-12-13
##  base                   * 3.4.3      2017-12-07
##  base64enc                0.1-3      2015-07-28
##  basejump                 0.3.1      2018-02-20
##  bcbioBase              * 0.1.4      2018-02-20
##  bcbioRNASeq            * 0.1.6      2018-02-20
##  bindr                    0.1        2016-11-13
##  bindrcpp               * 0.2        2017-06-17
##  Biobase                * 2.38.0     2017-10-31
##  BiocGenerics           * 0.24.0     2017-10-31
##  BiocInstaller            1.28.0     2017-10-31
##  BiocParallel             1.12.0     2017-10-31
##  biomaRt                  2.34.2     2018-01-20
##  Biostrings               2.46.0     2017-10-31
##  bit                      1.1-12     2014-04-09
##  bit64                    0.9-7      2017-05-08
##  bitops                   1.0-6      2013-08-17
##  blob                     1.1.0      2017-06-17
##  broom                    0.4.3      2017-11-20
##  cellranger               1.1.0      2016-07-27
##  checkmate                1.8.5      2017-10-24
##  circlize                 0.4.3      2017-12-20
##  cli                      1.0.0      2017-11-05
##  cluster                  2.0.6      2017-03-10
##  codetools                0.2-15     2016-10-05
##  colorspace               1.3-2      2016-12-14
##  compiler                 3.4.3      2017-12-07
##  ComplexHeatmap           1.17.1     2017-10-25
##  ConsensusClusterPlus     1.42.0     2017-10-31
##  cowplot                  0.9.2      2017-12-17
##  crayon                   1.3.4      2017-09-16
##  curl                     3.1        2017-12-12
##  data.table               1.10.4-3   2017-10-27
##  datasets               * 3.4.3      2017-12-07
##  DBI                      0.7        2017-06-18
##  DEGreport              * 1.15.3     2018-02-20
##  DelayedArray           * 0.4.1      2017-11-07
##  dendsort                 0.3.3      2015-12-14
##  DESeq2                 * 1.18.1     2017-11-12
##  devtools                 1.13.5     2018-02-18
##  digest                   0.6.15     2018-01-28
##  dplyr                  * 0.7.4      2017-09-28
##  edgeR                    3.20.8     2018-02-03
##  ensembldb                2.2.2      2018-02-15
##  evaluate                 0.10.1     2017-06-24
##  forcats                * 0.3.0      2018-02-19
##  foreign                  0.8-69     2017-06-22
##  formatR                  1.5        2017-04-25
##  Formula                  1.2-2      2017-07-10
##  genefilter               1.60.0     2017-10-31
##  geneplotter              1.56.0     2017-10-31
##  GenomeInfoDb           * 1.14.0     2017-10-31
##  GenomeInfoDbData         1.0.0      2017-12-15
##  GenomicAlignments        1.14.1     2017-11-18
##  GenomicFeatures          1.30.3     2018-02-02
##  GenomicRanges          * 1.30.2     2018-02-15
##  GetoptLong               0.1.6      2017-03-07
##  ggplot2                * 2.2.1      2016-12-30
##  ggrepel                  0.7.0      2017-09-29
##  GlobalOptions            0.0.12     2017-05-21
##  glue                     1.2.0      2017-10-29
##  graphics               * 3.4.3      2017-12-07
##  grDevices              * 3.4.3      2017-12-07
##  grid                     3.4.3      2017-12-07
##  gridExtra                2.3        2017-09-09
##  grr                      0.9.5      2016-08-26
##  gtable                   0.2.0      2016-02-26
##  haven                    1.1.1      2018-01-18
##  hexbin                 * 1.27.2     2018-01-15
##  Hmisc                    4.1-1      2018-01-03
##  hms                      0.4.1      2018-01-24
##  htmlTable                1.11.2     2018-01-20
##  htmltools                0.3.6      2017-04-28
##  htmlwidgets              1.0        2018-01-20
##  httpuv                   1.3.5      2017-07-04
##  httr                     1.3.1      2017-08-20
##  source                              
##  cran (@1.4.1)                       
##  cran (@1.56.0)                      
##  cran (@1.48.0)                      
##  cran (@1.56.1)                      
##  Bioconductor                        
##  cran (@1.2.0)                       
##  cran (@2.10.1)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  cran (@0.2.0)                       
##  CRAN (R 3.4.3)                      
##  local                               
##  cran (@0.1-3)                       
##  Github (steinbaugh/basejump@9586c85)
##  Github (hbc/bcbioBase@93d2099)      
##  Github (hbc/bcbioRNASeq@a981d1b)    
##  cran (@0.1)                         
##  cran (@0.2)                         
##  Bioconductor                        
##  Bioconductor                        
##  Bioconductor                        
##  cran (@1.12.0)                      
##  Bioconductor                        
##  cran (@2.46.0)                      
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.0)                      
##  cran (@1.0-6)                       
##  CRAN (R 3.4.0)                      
##  CRAN (R 3.4.3)                      
##  cran (@1.1.0)                       
##  cran (@1.8.5)                       
##  CRAN (R 3.4.3)                      
##  cran (@1.0.0)                       
##  CRAN (R 3.4.3)                      
##  CRAN (R 3.4.0)                      
##  cran (@1.3-2)                       
##  local                               
##  cran (@1.17.1)                      
##  cran (@1.42.0)                      
##  CRAN (R 3.4.3)                      
##  CRAN (R 3.4.1)                      
##  CRAN (R 3.4.3)                      
##  cran (@1.10.4-)                     
##  local                               
##  CRAN (R 3.4.0)                      
##  Github (lpantano/DEGreport@b452f4c) 
##  cran (@0.4.1)                       
##  cran (@0.3.3)                       
##  cran (@1.18.1)                      
##  CRAN (R 3.4.3)                      
##  CRAN (R 3.4.3)                      
##  cran (@0.7.4)                       
##  Bioconductor                        
##  cran (@2.2.2)                       
##  cran (@0.10.1)                      
##  CRAN (R 3.4.3)                      
##  CRAN (R 3.4.3)                      
##  CRAN (R 3.4.0)                      
##  cran (@1.2-2)                       
##  cran (@1.60.0)                      
##  cran (@1.56.0)                      
##  Bioconductor                        
##  Bioconductor                        
##  cran (@1.14.1)                      
##  Bioconductor                        
##  cran (@1.30.2)                      
##  cran (@0.1.6)                       
##  cran (@2.2.1)                       
##  cran (@0.7.0)                       
##  cran (@0.0.12)                      
##  cran (@1.2.0)                       
##  local                               
##  local                               
##  local                               
##  cran (@2.3)                         
##  cran (@0.9.5)                       
##  cran (@0.2.0)                       
##  CRAN (R 3.4.3)                      
##  CRAN (R 3.4.3)                      
##  CRAN (R 3.4.3)                      
##  CRAN (R 3.4.3)                      
##  CRAN (R 3.4.3)                      
##  cran (@0.3.6)                       
##  CRAN (R 3.4.3)                      
##  cran (@1.3.5)                       
##  CRAN (R 3.4.1)                      
##  [ reached getOption("max.print") -- omitted 90 rows ]
> mdHeader("`utils::sessionInfo()`", level = 2)

utils::sessionInfo()

> utils::sessionInfo()
## R version 3.4.3 (2017-11-30)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS High Sierra 10.13.3
## 
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] parallel  stats4    stats     graphics  grDevices utils     datasets 
## [8] methods   base     
## 
## other attached packages:
##  [1] hexbin_1.27.2              bindrcpp_0.2              
##  [3] forcats_0.3.0              stringr_1.3.0             
##  [5] dplyr_0.7.4                purrr_0.2.4               
##  [7] readr_1.1.1                tidyr_0.8.0               
##  [9] tibble_1.4.2               ggplot2_2.2.1             
## [11] tidyverse_1.2.1            knitr_1.20                
## [13] bcbioRNASeq_0.1.6          DEGreport_1.15.3          
## [15] quantreg_5.35              SparseM_1.77              
## [17] DESeq2_1.18.1              bcbioBase_0.1.4           
## [19] SummarizedExperiment_1.8.1 DelayedArray_0.4.1        
## [21] matrixStats_0.53.1         Biobase_2.38.0            
## [23] GenomicRanges_1.30.2       GenomeInfoDb_1.14.0       
## [25] IRanges_2.12.0             S4Vectors_0.16.0          
## [27] BiocGenerics_0.24.0       
## 
## loaded via a namespace (and not attached):
##   [1] basejump_0.3.1                R.utils_2.6.0                
##   [3] RSQLite_2.0                   AnnotationDbi_1.40.0         
##   [5] htmlwidgets_1.0               grid_3.4.3                   
##   [7] BiocParallel_1.12.0           devtools_1.13.5              
##   [9] munsell_0.4.3                 preprocessCore_1.40.0        
##  [11] codetools_0.2-15              withr_2.1.1                  
##  [13] colorspace_1.3-2              BiocInstaller_1.28.0         
##  [15] rstudioapi_0.7                assertive.base_0.0-7         
##  [17] rdrop2_0.8.1.9999             labeling_0.3                 
##  [19] tximport_1.6.0                GenomeInfoDbData_1.0.0       
##  [21] mnormt_1.5-5                  bit64_0.9-7                  
##  [23] pheatmap_1.0.8                rprojroot_1.3-2              
##  [25] Matrix.utils_0.9.6            R6_2.2.2                     
##  [27] assertive.sets_0.0-3          locfit_1.5-9.1               
##  [29] AnnotationFilter_1.2.0        bitops_1.0-6                 
##  [31] reshape_0.8.7                 assertthat_0.2.0             
##  [33] scales_0.5.0                  nnet_7.3-12                  
##  [35] gtable_0.2.0                  affy_1.56.0                  
##  [37] ensembldb_2.2.2               rlang_0.2.0                  
##  [39] MatrixModels_0.4-1            genefilter_1.60.0            
##  [41] GlobalOptions_0.0.12          splines_3.4.3                
##  [43] rtracklayer_1.38.3            lazyeval_0.2.1               
##  [45] acepack_1.4.1                 broom_0.4.3                  
##  [47] checkmate_1.8.5               modelr_0.1.1                 
##  [49] yaml_2.1.16                   reshape2_1.4.3               
##  [51] GenomicFeatures_1.30.3        backports_1.1.2              
##  [53] httpuv_1.3.5                  Hmisc_4.1-1                  
##  [55] RMySQL_0.10.13                tools_3.4.3                  
##  [57] psych_1.7.8                   logging_0.7-103              
##  [59] affyio_1.48.0                 assertive.strings_0.0-3      
##  [61] RColorBrewer_1.1-2            assertive.reflection_0.0-4   
##  [63] Rcpp_0.12.15                  plyr_1.8.4                   
##  [65] base64enc_0.1-3               progress_1.1.2               
##  [67] zlibbioc_1.24.0               RCurl_1.95-4.10              
##  [69] prettyunits_1.0.2             openssl_1.0                  
##  [71] dendsort_0.3.3                rpart_4.1-12                 
##  [73] GetoptLong_0.1.6              viridis_0.5.0                
##  [75] cowplot_0.9.2                 haven_1.1.1                  
##  [77] grr_0.9.5                     ggrepel_0.7.0                
##  [79] cluster_2.0.6                 assertive.models_0.0-1       
##  [81] magrittr_1.5                  data.table_1.10.4-3          
##  [83] assertive.data_0.0-1          circlize_0.4.3               
##  [85] ProtGenerics_1.10.0           hms_0.4.1                    
##  [87] mime_0.5                      evaluate_0.10.1              
##  [89] xtable_1.8-2                  XML_3.98-1.10                
##  [91] readxl_1.0.0                  gridExtra_2.3                
##  [93] shape_1.4.4                   compiler_3.4.3               
##  [95] biomaRt_2.34.2                assertive.datetimes_0.0-2    
##  [97] crayon_1.3.4                  R.oo_1.21.0                  
##  [99] htmltools_0.3.6               assertive_0.3-5              
## [101] Formula_1.2-2                 geneplotter_1.56.0           
## [103] lubridate_1.7.2               DBI_0.7                      
## [105] formatR_1.5                   assertive.files_0.0-2        
## [107] ComplexHeatmap_1.17.1         assertive.numbers_0.0-2      
## [109] Matrix_1.2-12                 cli_1.0.0                    
## [111] vsn_3.46.0                    assertive.types_0.0-3        
## [113] assertive.matrices_0.0-1      R.methodsS3_1.7.1            
## [115] assertive.data.uk_0.0-1       bindr_0.1                    
## [117] pkgconfig_2.0.1               GenomicAlignments_1.14.1     
## [119] foreign_0.8-69                xml2_1.2.0                   
## [121] assertive.data.us_0.0-1       annotate_1.56.1              
## [123] XVector_0.18.0                rvest_0.3.2                  
## [125] digest_0.6.15                 ConsensusClusterPlus_1.42.0  
## [127] assertive.code_0.0-1          Biostrings_2.46.0            
## [129] rmarkdown_1.8                 cellranger_1.1.0             
## [131] htmlTable_1.11.2              edgeR_3.20.8                 
## [133] curl_3.1                      shiny_1.0.5                  
## [135] Rsamtools_1.30.0              rjson_0.2.15                 
## [137] jsonlite_1.5                  nlme_3.1-131.1               
## [139] viridisLite_0.3.0             limma_3.34.8                 
## [141] pillar_1.1.0                  lattice_0.20-35              
## [143] Nozzle.R1_1.1-1               httr_1.3.1                   
## [145] survival_2.41-3               interactiveDisplayBase_1.16.0
## [147] glue_1.2.0                    bit_1.1-12                   
## [149] assertive.properties_0.0-4    stringi_1.1.6                
## [151] blob_1.1.0                    AnnotationHub_2.10.1         
## [153] latticeExtra_0.6-28           memoise_1.1.0

Jolliffe, Ian. 2002. Principal component analysis. Wiley Online Library.

Kolde, Raivo. 2015. Pheatmap: Pretty Heatmaps. https://CRAN.R-project.org/package=pheatmap.

Love, Michael I, Wolfgang Huber, and Simon Anders. 2014. “Moderated Estimation of Fold Change and Dispersion for RNA-seq Data with DESeq2.” Genome Biol. 15 (12): 550. doi:10.1186/s13059-014-0550-8.

Patro, Rob, Geet Duggal, Michael I Love, Rafael A Irizarry, and Carl Kingsford. 2017. “Salmon Provides Fast and Bias-Aware Quantification of Transcript Expression.” Nat. Methods 14 (4): 417–19. doi:10.1038/nmeth.4197.

Robinson, Mark D, and Alicia Oshlack. 2010. “A Scaling Normalization Method for Differential Expression Analysis of RNA-seq Data.” Genome Biol. 11 (3): R25. doi:10.1186/gb-2010-11-3-r25.

Soneson, Charlotte, Michael I Love, and Mark D Robinson. 2016. “Differential Analyses for RNA-seq: Transcript-Level Estimates Improve Gene-Level Inferences.” F1000Res. 4 (December). doi:10.12688/f1000research.7563.1.

Wickham, Hadley. 2009. Ggplot2: Elegant Graphics for Data Analysis. Use R. Springer New York. doi:10.1007/978-0-387-98141-3.